package modeller.databasedesignmodel.relation.index;

import modeller.databasedesignmodel.Attribute;
import modeller.databasedesignmodel.servicedemand.transaction.sqlquery.calculatorfetcher.ISQLQueryServiceDemandCalculatorFetcher;
import modeller.databasedesignmodel.servicedemand.transaction.sqlquery.demandFetcher.ISQLQueryServiceDemandCalculator;

import java.util.LinkedList;
import java.util.List;

/**
 * Created by:  Jason Ye
 * Date:        25/03/2012
 * Time:        16:21
 */
public interface ITableIndex {

    int getIndexEntrySize();

    List<Attribute> getAttributeList();

    void setAttributeList(LinkedList<Attribute> m_structure);

    @Override
    String toString();

    boolean isClustered();

    boolean isTree();

    boolean isUnique();

    void addAttribute(Attribute attribute);

    void removeAttribute(Attribute attribute);

    ISQLQueryServiceDemandCalculator offerCalculator(ISQLQueryServiceDemandCalculatorFetcher visitorFetcher);


}
